package com.dy.design_pattern_study.abstract_factory_pattern.dome_abstract_factory.factory.impl.sqlServer;

import com.dy.design_pattern_study.abstract_factory_pattern.dome_abstract_factory.IDB.IDepartment;
import com.dy.design_pattern_study.abstract_factory_pattern.dome_abstract_factory.IDB.IUser;
import com.dy.design_pattern_study.abstract_factory_pattern.dome_abstract_factory.IDB.impl.sqlServer.SqlserverDepartment;
import com.dy.design_pattern_study.abstract_factory_pattern.dome_abstract_factory.IDB.impl.sqlServer.SqlserverUser;
import com.dy.design_pattern_study.abstract_factory_pattern.dome_abstract_factory.factory.IFactory;

/**
 * @CreateBy zhangdingyi
 * @Date 2023-04-05
 * @Content 具体的抽象工厂实现 SqlServer *SqlServer抽象工厂
 */
public class SqlServerFactory implements IFactory {

    /*
        从这里的话可以看出与工厂方法的不同
        1.这里产品是不同类型的 User一个类型、Department一个类型
        2.那么这里把其中一个产品给删除掉，那么其就会变回原先的工厂方法
        也就是说，抽象工厂就是在工厂方法的基础上添加多个产品（多个产品接口）就是抽象方法
     */
    @Override
    public IUser CreateUser() {
        //这里是 直接调用 抽象产品1 的实现
        return new SqlserverUser();
    }

    @Override
    public IDepartment CreateDepartment() {
        //这个是抽象产品 2
        return new SqlserverDepartment();
    }
}
